package utils

import (
	"context"
	"jgyApi/server/global"
	"regexp"
	"strings"
)
type CacheResult struct {
	Code uint        `json:"code"`
	Data interface{} `json:"data"`
}
//
// GetRedisCacheField
//  @Description: 通用方法设置缓存
//  @param table
//  @param kField
//  @param key
//  @param field
//  @return interface{}
//
func GetRedisCacheField(table string, kField string, key string, field string) CacheResult {
	var build strings.Builder
	build.WriteString(table)
	build.WriteString("-")
	build.WriteString(key)
	redisKey := build.String()

	var rs CacheResult
	rs.Code = 401

	rec := global.GVA_REDIS.HGet(context.Background(), redisKey, field)
	if rec.Err() != nil {
		var data map[string]interface{}
		where := kField + "=" + "?"
		err := global.GVA_DB.Table(table).Select(field).Where(where, key).Take(&data).Error
		if err == nil {
			rs.Code = 200
			rs.Data = data[field]
			global.GVA_REDIS.HSet(context.Background(), redisKey, field, data[field])
		}

	} else {
		rs.Code = 200
		rs.Data = rec.Val()
	}
	return rs
}

// CheckMobile 检验手机号
func CheckMobile(phone string) bool {
	// 匹配规则
	// ^1第一位为一
	// [345789]{1} 后接一位345789 的数字
	// \\d \d的转义 表示数字 {9} 接9位
	// $ 结束符
	regRuler := "^1[345789]{1}\\d{9}$"

	// 正则调用规则
	reg := regexp.MustCompile(regRuler)

	// 返回 MatchString 是否匹配
	return reg.MatchString(phone)
}

